#include <iostream>
using namespace std;

/*
    1.分析：
         人类书写习惯
            int result=c1+6;
         函数调用
            int result=c1.opearator+(6);

         人类书写习惯
            int result=6+c1;
         函数调用
            int result=6.opearator+(c1); //成员函数的理解，搞不定，6不是猫对象，无法调用成员函数
            int result=opearator+(6,c1); //友元函数的理解,完全正确

         双目运算符：左边的当前对象，右边的是参数

*/
class Cat
{
public:
    Cat(string _name, int _age)
    {
        name = _name;
        age = _age;
    }
    friend int operator+(int num, Cat &other);

private:
    string name;
    int age;
};

// 定义普通函数：重载加法
int operator+(int num, Cat &other)
{
    cout << "加法重载普通函数,int+Cat" << endl;
    return num + other.age;
}

int main()
{
    Cat c1("旺财", 5);
    Cat c2("来福", 4);

    // 人类习惯
    // int result=6+c1;
    // 函数调用
    int result = operator+(6, c1);
    cout << "result is: " << result << endl;
    return 0;
}